HAL CCB compute ECDSA signature using RNG with hardware key ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
CCB_HandleTypeDef hccb;
CCB_WrappingKeyTypeDef wrappedKeyConf;
CCB_ECDSACurveParamTypeDef ECDSAparam;
CCB_ECDSAKeyBlobTypeDef ECDSAKeyBlob;
CCB_ECDSASignTypeDef Signature;
CCB_ECCMulPointTypeDef publickeyOut;
HAL_CCB_Init(&hccb);
wrappedKeyConf.WrappingKeyType = HAL_CCB_USER_KEY_HW;
ECDSAKeyBlob.pIV = IV_Buffer;
ECDSAKeyBlob.pTag = TAG_Buffer;
ECDSAKeyBlob.pWrappedKey = PrivateKey_encrypted_192;
ECDSAparam.primeOrderSizeByte = ecdsa192_n_length;
ECDSAparam.modulusSizeByte = ecdsa192_p_length;
ECDSAparam.coefSignA = ecdsa192_a_sign;
ECDSAparam.pAbsCoefA = ecdsa192_a_abs;
ECDSAparam.pCoefB = ecdsa192_b;
ECDSAparam.pModulus = ecdsa192_p;
ECDSAparam.pPrimeOrder = ecdsa192_n;
ECDSAparam.pPointX = ecdsa192_Gx;
ECDSAparam.pPointY = ecdsa192_Gy;
HAL_CCB_ECDSA_GenerateWrapPrivateKey(&hccb, &ECDSAparam,
&wrappedKeyConf, &ECDSAKeyBlob);
Signature.pSSign = ECDSASout_192;
Signature.pRSign = ECDSARout_192;
HAL_CCB_ECDSA_Sign(&hccb, &ECDSAparam, &wrappedKeyConf,
&ECDSAKeyBlob, ECDSAHash_192, &Signature);
publickeyOut.pPointX = PublicKeyXout_192;
publickeyOut.pPointY = PublicKeyYout_192;
HAL_CCB_ECDSA_ComputePublicKey(&hccb, &ECDSAparam, &wrappedKeyConf,
&ECDSAKeyBlob,
&publickeyOut);
|
hal_ccb_handle_t hccb;
hal_ccb_wrapping_sw_key_context_t wrappedKeyConf;
hal_ccb_ecdsa_curve_param_t ECDSAparam;
hal_ccb_ecdsa_key_blob_t ECDSAKeyBlob;
hal_ccb_ecdsa_sign_t Signature;
hal_ccb_ecc_point_t publickeyOut;
HAL_CCB_Init(&hccb, HAL_CCB);
ECDSAKeyBlob.p_iv = IV_Buffer;
ECDSAKeyBlob.p_tag = TAG_Buffer;
ECDSAKeyBlob.p_wrapped_key = PrivateKey_encrypted_192;
ECDSAparam.prime_order_size_byte = ecdsa192_n_length;
ECDSAparam.modulus_size_byte = ecdsa192_p_length;
ECDSAparam.coef_sign_a = ecdsa192_a_sign;
ECDSAparam.p_abs_coef_a = ecdsa192_a_abs;
ECDSAparam.p_coef_b = ecdsa192_b;
ECDSAparam.p_modulus = ecdsa192_p;
ECDSAparam.p_prime_order = ecdsa192_n;
ECDSAparam.p_point_x = ecdsa192_Gx;
ECDSAparam.p_point_y = ecdsa192_Gy;
ECDSAparam.ecdsa_pool_buffer.p_buff = ccb_pool_buffer;
ECDSAparam.ecdsa_pool_buffer.buff_size_byte = HAL_CCB_ECDSA_CALC_BUFFER_SIZE(ecdsa192_p_length);
HAL_CCB_ECDSA_HW_GenerateWrapPrivateKey(&hccb, &ECDSAparam,
HAL_CCB_KEY_HW, &ECDSAKeyBlob);
Signature.p_s_sign = ECDSASout_192;
Signature.p_r_sign = ECDSARout_192;
HAL_CCB_ECDSA_HW_Sign(&hccb, &ECDSAparam, HAL_CCB_KEY_HW,
&ECDSAKeyBlob, ECDSAHash_192, 24, &Signature);
publickeyOut.p_point_x = PublicKeyXout_192;
publickeyOut.p_point_y = PublicKeyYout_192;
HAL_CCB_ECDSA_HW_ComputePublicKey(&hccb, &ECDSAparam,
HAL_CCB_KEY_HW,
&ECDSAKeyBlob, &publickeyOut);
|

